package com.phuc.game.tankshooter.engine;

import static com.phuc.game.tankshooter.engine.EnemyFactory.*;

import com.phuc.game.tankshooter.sprite.ItemSprite;

public class AIFactory {

	public static final int TIME_PER_PHASE = 70;
	
	public interface PhaseEnemyAdd {
		/**
		 * Toan xe tang loai nho
		 */
		static final int [] PHASE_1 = new int[] {
			ENEMY_TANK_A_RED,
			ENEMY_TANK_A_RED,
			ENEMY_TANK_A_RED,
			ENEMY_TANK_A_RED,
			ENEMY_TANK_A_RED,
		};
		
		/**
		 * Toan xe tang loai nho
		 */
		static final int [] PHASE_2 = new int[] {
			ENEMY_TANK_A_GREEN,
			ENEMY_TANK_A_GREEN,
		};
		
		/**
		 * Toan xe tang loai nho, xuat hien them xe tai
		 */
		static final int [] PHASE_3 = new int[] {
			ENEMY_TANK_A_RED,
			ENEMY_TANK_A_RED,
			ENEMY_TANK_A_GREEN,
			ENEMY_TANK_A_GREEN,
			ENEMY_TANK_A_GREEN,
			ENEMY_TRUCK_ORANGE,
		};
		
		/**
		 * Phan lon xe tang loai nho, xuat hien them T34
		 */
		static final int [] PHASE_4 = new int[] {
			ENEMY_TANK_A_GREEN,
			ENEMY_TANK_A_GREEN,
			ENEMY_TANK_A_RED,
			ENEMY_TANK_A_RED,
			ENEMY_TANK_T34_ORANGE,
			ENEMY_TANK_T34_ORANGE,
			ENEMY_TANK_T34_ORANGE,
			
		};
		
		/**
		 * Phan lon xe tang loai nho, xuat hien nhieu them T34
		 */
		static final int [] PHASE_5 = new int[] {
			ENEMY_TANK_A_GREEN,
			ENEMY_TANK_A_RED,
			ENEMY_TANK_T34_ORANGE,
			ENEMY_TANK_T34_ORANGE,
			ENEMY_TANK_T34_GREEN,
			ENEMY_TANK_T34_GREEN,
			ENEMY_TANK_T34_GREEN,
		};
		
		/**
		 * Xuat hien xe cho xang
		 */
		static final int [] PHASE_6 = new int[] {
			ENEMY_TANK_A_GREEN,
			ENEMY_TANK_A_RED,
			ENEMY_TANK_A_RED,
			ENEMY_TANK_A_RED,
			ENEMY_TANK_T34_ORANGE,
			ENEMY_TANK_T34_ORANGE,
			ENEMY_TANK_T34_GREEN,
			ENEMY_TRUCK_ORANGE,
			ENEMY_FUEL_TRUCK_RED,
			ENEMY_TRUCK_ORANGE,
			ENEMY_FUEL_TRUCK_RED,
			ENEMY_TRUCK_ORANGE,
			ENEMY_FUEL_TRUCK_RED,
		};
		
		/**
		 * T34 Nhieu len dang ke, xuat hien them M
		 */
		static final int [] PHASE_7 = new int[] {
			ENEMY_TANK_A_GREEN,
			ENEMY_TANK_A_RED,
			ENEMY_TANK_A_RED,
			ENEMY_TANK_T34_ORANGE,
			ENEMY_TANK_T34_ORANGE,
			ENEMY_TANK_T34_GREEN,
			ENEMY_TANK_T34_ORANGE,
			ENEMY_TANK_T34_ORANGE,
			ENEMY_TANK_T34_GREEN,
			ENEMY_TANK_T34_ORANGE,
			ENEMY_TANK_T34_ORANGE,
			ENEMY_TANK_T34_GREEN,
			ENEMY_TANK_MOLE_ORANGE,
			ENEMY_TANK_MOLE_ORANGE,
			ENEMY_TANK_MOLE_PUPLE,
			ENEMY_TANK_MOLE_PUPLE,
			ENEMY_TANK_MOLE_PUPLE,
			ENEMY_TANK_MOLE_PUPLE,
			ENEMY_TANK_MOLE_PUPLE,
			ENEMY_TANK_MOLE_PUPLE,
			ENEMY_TANK_MOLE_PUPLE,
		};
		
		/**
		 * T34 va Mole nhieu len
		 */
		static final int [] PHASE_8 = new int[] {
			ENEMY_TANK_A_GREEN,
			ENEMY_TANK_A_RED,
			ENEMY_TANK_A_RED,
			ENEMY_TANK_T34_ORANGE,
			ENEMY_TANK_T34_ORANGE,
			ENEMY_TANK_T34_GREEN,
			ENEMY_TANK_T34_ORANGE,
			ENEMY_TANK_T34_ORANGE,
			ENEMY_TANK_T34_GREEN,
			ENEMY_TANK_T34_ORANGE,
			ENEMY_TANK_T34_ORANGE,
			ENEMY_TANK_T34_GREEN,
			ENEMY_TANK_T34_ORANGE,
			ENEMY_TANK_MOLE_ORANGE,
			ENEMY_TANK_MOLE_ORANGE,
			ENEMY_TANK_MOLE_PUPLE,
			ENEMY_TANK_MOLE_PUPLE,
			ENEMY_TANK_MOLE_PUPLE,
			ENEMY_TANK_MOLE_PUPLE,
			ENEMY_TANK_TIGER_RED,
			ENEMY_TANK_TIGER_RED,
			ENEMY_TANK_TIGER_RED,
			ENEMY_TANK_TIGER_RED,
		};
		
		/**
		 * T34 va Mole nhieu len
		 */
		static final int [] PHASE_9 = new int[] {
			ENEMY_TANK_A_RED,
			ENEMY_TANK_T34_ORANGE,
			ENEMY_TANK_T34_ORANGE,
			ENEMY_TANK_T34_GREEN,
			ENEMY_TANK_MOLE_ORANGE,
			ENEMY_TANK_MOLE_PUPLE,
			ENEMY_TANK_MOLE_PUPLE,
			ENEMY_TANK_MOLE_PUPLE,
			ENEMY_TANK_MOLE_PUPLE,
			ENEMY_TANK_TIGER_RED,
			ENEMY_TANK_TIGER_RED,
			ENEMY_TANK_TIGER_RED,
			ENEMY_TANK_TIGER_RED,
			ENEMY_TANK_TIGER_RED,
			ENEMY_TANK_TIGER_GREEN,
			ENEMY_TANK_TIGER_GREEN,
			ENEMY_TANK_TIGER_GREEN,
		};
		
		/**
		 * T34 va Mole nhieu len
		 */
		static final int [] PHASE_10 = new int[] {
			ENEMY_TANK_A_RED,
			ENEMY_TANK_T34_ORANGE,
			ENEMY_TANK_T34_ORANGE,
			ENEMY_TANK_T34_GREEN,
			ENEMY_TANK_MOLE_PUPLE,
			ENEMY_TANK_MOLE_PUPLE,
			ENEMY_TANK_MOLE_PUPLE,
			ENEMY_TANK_TIGER_RED,
			ENEMY_TANK_TIGER_RED,
			ENEMY_TANK_TIGER_RED,
			ENEMY_TANK_TIGER_RED,
			ENEMY_TANK_TIGER_RED,
			ENEMY_TANK_TIGER_RED,
			ENEMY_TANK_TIGER_GREEN,
			ENEMY_TANK_TIGER_GREEN,
		};

		static final int [] PHASE_11_UP = new int[] {
			ENEMY_TANK_T34_GREEN,
			ENEMY_TANK_T34_GREEN,
			ENEMY_TANK_T34_GREEN,
			ENEMY_TANK_T34_GREEN,
			ENEMY_TANK_MOLE_PUPLE,
			ENEMY_TANK_MOLE_PUPLE,
			ENEMY_TANK_MOLE_PUPLE,
			ENEMY_TANK_MOLE_PUPLE,
			ENEMY_TANK_TIGER_RED,
			ENEMY_TANK_TIGER_RED,
			ENEMY_TANK_TIGER_RED,
			ENEMY_TANK_TIGER_RED,
			ENEMY_TANK_TIGER_RED,
			ENEMY_TANK_TIGER_GREEN,
			ENEMY_TANK_TIGER_GREEN,
			ENEMY_TANK_TIGER_GREEN,
		};
		
		static final int [][] PHASES = {
				PHASE_1, PHASE_2, PHASE_3, PHASE_4,
				PHASE_5, PHASE_6, PHASE_7, PHASE_8, PHASE_9, PHASE_10,
				PHASE_11_UP,
		};
	}
	
	public interface PhaseEnemyGroup {
		static final int [] PHASE_1 = new int[] {
			ENEMY_TANK_A_RED,
		};
		
		static final int [] PHASE_2 = new int[] {
			ENEMY_TANK_A_RED,
		};
		
		static final int [] PHASE_3 = new int[] {
			ENEMY_TANK_A_RED,
			ENEMY_TANK_A_RED,
			ENEMY_TANK_A_GREEN,
		};
		
		static final int [] PHASE_4 = new int[] {
			ENEMY_TANK_A_GREEN,
		};
		
		static final int [] PHASE_5 = new int[] {
			ENEMY_TANK_A_RED,
			ENEMY_TANK_T34_ORANGE
		};
		
		static final int [] PHASE_6 = new int[] {
			ENEMY_TANK_A_RED,
			ENEMY_TANK_A_RED,
			ENEMY_TANK_T34_ORANGE
		};
		
		static final int [] PHASE_7 = new int[] {
			ENEMY_TANK_A_RED,
			ENEMY_TANK_A_RED,
			ENEMY_TANK_MOLE_ORANGE,
			ENEMY_TANK_MOLE_ORANGE,
			ENEMY_TANK_T34_ORANGE
		};
		
		static final int [] PHASE_8 = new int[] {
			ENEMY_TANK_A_RED,
			ENEMY_TANK_A_RED,
			ENEMY_TANK_MOLE_ORANGE,
			ENEMY_TANK_MOLE_ORANGE,
			ENEMY_TANK_MOLE_ORANGE,
			ENEMY_TANK_T34_ORANGE
		};
		
		static final int [] PHASE_9 = new int[] {
			ENEMY_TANK_A_RED,
			ENEMY_TANK_A_RED,
			ENEMY_TANK_MOLE_ORANGE,
			ENEMY_TANK_T34_ORANGE
		};
		
		static final int [] PHASE_10 = new int[] {
			ENEMY_TANK_A_RED,
			ENEMY_TANK_A_RED,
			ENEMY_TANK_MOLE_ORANGE,
			ENEMY_TANK_T34_ORANGE
		};
		
		static final int [] PHASE_11_UP = new int[] {
			ENEMY_TANK_MOLE_ORANGE,
			ENEMY_TANK_MOLE_ORANGE,
			ENEMY_TANK_T34_ORANGE,
			ENEMY_TANK_MOLE_ORANGE,
			ENEMY_TANK_MOLE_ORANGE,
			ENEMY_TANK_T34_ORANGE,
			ENEMY_TANK_MOLE_ORANGE,
			ENEMY_TANK_MOLE_ORANGE,
			ENEMY_TANK_T34_ORANGE,
			ENEMY_TANK_MOLE_ORANGE,
			ENEMY_TANK_MOLE_ORANGE,
			ENEMY_TANK_TIGER_RED,
			ENEMY_TANK_TIGER_RED,
			ENEMY_TANK_TIGER_RED,
			ENEMY_TANK_TIGER_RED,
			ENEMY_TANK_TIGER_RED,
			ENEMY_TANK_TIGER_RED,
			ENEMY_TANK_TIGER_RED,
			ENEMY_TANK_TIGER_RED,
			ENEMY_TANK_TIGER_RED,
			ENEMY_TANK_TIGER_RED,
			ENEMY_TANK_TIGER_RED,
			ENEMY_TANK_TIGER_RED
		};
		
		static final int [][] PHASES = {
			PHASE_1, PHASE_2, PHASE_3, PHASE_4,
			PHASE_5, PHASE_6, PHASE_7, PHASE_8, PHASE_9, PHASE_10,
			PHASE_11_UP,
		};
	}

	public interface PhaseBoss {
		static final int PHASE_1 = ENEMY_TANK_MOLE_PUPLE;
		static final int PHASE_2 = ENEMY_TANK_T34_GREEN;
		static final int PHASE_3 = ENEMY_TANK_TIGER_RED;
		static final int PHASE_4 = ENEMY_TANK_A_GOLD;
		static final int PHASE_5 = ENEMY_TANK_A_GOLD;
		static final int PHASE_6 = ENEMY_TANK_A_GOLD;
		static final int PHASE_7 = ENEMY_TANK_T34_GOLD;
		static final int PHASE_8 = ENEMY_TANK_T34_GOLD;
		static final int PHASE_9 = ENEMY_TANK_T34_GOLD;
		static final int PHASE_10 = ENEMY_TANK_TIGER_GOLD;
		static final int PHASE_11_UP = ENEMY_TANK_TIGER_GOLD;
		
		static final int [] PHASES = {
			PHASE_1, PHASE_2, PHASE_3, PHASE_4,
			PHASE_5, PHASE_6, PHASE_7, PHASE_8, PHASE_9, PHASE_10,
			PHASE_11_UP,
		};
	}
	
	public interface ItemRate {
		static final int [] ITEM = new int [] {
			ItemSprite.TYPE_HEART,
			ItemSprite.TYPE_ROCKET,
			ItemSprite.TYPE_ROCKET_BIG,
			ItemSprite.TYPE_POINT,
		};
	}
}
